러스트 세계에서 강력한 CLI 도구는 단일 스크립트가 아니라 철저히 계획된 프로젝트 블루프린트입니다. 예를 들어 그렙과 같은 도구를 만들기 위해 우리는 바이너리 크레이트 와 라이브러리 크레이트의 노력을 나눕니다.
1. 커피 머신 비유
고급 커피 머신을 생각해 보세요. lib.rs 에는 물을 데우고 원두를 분쇄하는 내부 메커니즘—즉 '엔진 로직'—이 포함되어 있습니다. 반면, main.rs 은 사용자가 누르는 외부 버튼—즉 '인터페이스'입니다. 이들을 분리해 두면, 기술자는 실제 버튼(바이너리)을 매번 눌러야 하는 일 없이 히터(라이브러리)를 테스트할 수 있습니다.
2. 엔진의 기초 설계
우리는 $ cargo new minigrep으로 시작합니다. 이 명령은 main.rs를 생성하지만, 수동으로 src/lib.rs을 추가해야 합니다. 이러한 아키텍처적 분리는 우리의 핵심 검색 로직이 분리된 상태 CLI 파싱에서 분리되도록 해주며, 더 쉬운 테스트와 모듈성 구현을 가능하게 합니다.
3. 테스트 가능한 모듈성
로직을 lib.rs로 옮김으로써, 러스트의 테스트 프레임워크를 활용해 통제된 환경에서 라이브러리 함수를 호출할 수 있습니다. 우리는 바이너리에서 use minigrep; 을 사용하여 엔진을 가져오면서 동시에 명령줄 파싱 로직을 격리시킬 수 있습니다.
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>